1. Field of the Invention
The invention relates generally to an addressing scheme for addressing resources in a computer system.
2. Background Art
Most of today's computer systems may include a client using at least one remotely accessible resource. For example, the remotely accessible resource may be data stored in a computer memory or data stored on a mass storage device. The remotely accessible resource may be located within a computer system together with the client or in a remote computer system connected to a client computer system through a network.
Computer systems generally experience a gain in overall performance as CPU data handling capacities and communication bandwidth within a computer system or between computer systems (connected through a network) are increased and memory access times are reduced. A few years ago, the traffic on the communication bandwidth would allow data transfer rates that could be easily handled by a computer system's CPU without impeding on general performance of the computer system. Today, the available communication bandwidth is reaching values where processing incoming and outgoing data may use excessive amounts of CPU processing time. Consequently, a once relatively large communication bandwidth may be reduced de facto from a bottleneck condition when communicated data is processed by the CPUs of remote computer systems.
In traditional hardware and software architecture, a significant load is imposed on a server's CPU and memory because data is often copied between a network subsystem of a kernel of the computer system and an application executed on the computer system. Various solutions have been developed to avoid or at least reduce the described bottleneck effect. One solution is known as Remote Direct Memory Access (“RDMA”). RDMA is a network interface (“NI”) feature that allows one computer system to directly place information into the memory of another computer. RDMA minimizes demands on bandwidth and processing overhead.
RDMA is widely used to read or write data in a computer system's memory. A RDMA write request allows the copying of data directly into a physical memory used by an application on a remote computer system. The RDMA write request therefore includes an address at which the data should be copied. A RDMA read request allows the reading of data directly from the physical memory of a remote computer system and copying the data into the memory of the requesting computer system. The RDMA read request includes two addresses: source of data and destination of data.
To make memory available for writing or reading data, the RDMA-enabled remote computer system publishes a process identity and a virtual address of the available memory for use by other computer systems. Any other computer system may use the process identity and the virtual address of the available memory in a RDMA request directed to the remote computer system. The process identity and the virtual address are recognized by the remote system and access to the corresponding memory for writing and/or reading is immediately enabled.
A RDMA write or read request usually submits the process identity together with a virtual address to the network interface of the remote computer system. The network interface has access to a shared translation table that is maintained by the kernel of the system. The shared translation table identifies a link between the couple comprising a process identity and a virtual address, and a corresponding physical address in the computer system.
While the virtual address for a memory location remains constant, the physical address of the storage location may vary in time depending on various factors, such as how the data stored at the virtual address is used in the computer system. Specifically, the data may be moved from one physical location in memory to another. In this case, the kernel updates the link corresponding to the virtual address in the shared translation table with the address of the other physical location.
Similarly, each client computer issuing a RDMA write and/or RDMA read request(s) may also include a RDMA-enabled network interface and a shared translation table. In fact, each computer system containing a RDMA-enabled network interface may potentially act as a client or as a server during a RDMA operation.
Accessing certain resources in a remote computer system may continue to involve manipulation of data by the host CPU of the remote computer system. For example, manipulation may be required for resources that are made accessible through a cache memory system, such as cached hard disks, when a cache system may not cooperate with a RDMA functionality of the NI.